{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "wooden-series", "metadata": {}, "outputs": [], "source": [ "# In this Python tutorial we show how to compute the Fourier transform (and\n", "# inverse Fourier transform) of a set of discrete data using 'fft()' ('ifft()')).\n", "# FFT stands for Fast Fourier Transform. We will first demonstrate the use\n", "# of 'fft()' using some artificial data which shows a square wave of amplitude\n", "# 1 as a function of time. The period of the square wave is 1 second. The\n", "# data is stored in a file called \"squareWave.dat\".\n", "import numpy as np \n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 2, "id": "instant-allen", "metadata": {}, "outputs": [], "source": [ "# Use the SciPy module to generate a square wave between +/-1 with a period of 1 s.\n", "from scipy import signal\n", "time = np.linspace(0, 50, 10000, endpoint=False)\n", "amplitude = signal.square(2 * np.pi * 1 * time)" ] }, { "cell_type": "code", "execution_count": 6, "id": "indoor-sphere", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZcAAAEGCAYAAACpXNjrAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAABM6ElEQVR4nO2dedxcRZX3fydP9n3fdwg7JIYQliCyBQJRFhUHXkVwmQy+oOg44+A4rzo6GkdHnNFhRBwVXBGXSMTIqgRQkQQIISwhIQESEpIAIQlkI8l5/7i3u+9SdW7V7dvb0+fLh08/XXVPnXPrVnWlb/36XGJmKIqiKEqRdGl0AIqiKErnQxcXRVEUpXB0cVEURVEKRxcXRVEUpXB0cVEURVEKp2ujA6gnQ4cO5YkTJzY6DEVRlJbi4YcffpmZh/nYtNXiMnHiRCxdurTRYSiKorQURPS8r43eFlMURVEKRxcXRVEUpXB0cVEURVEKRxcXRVEUpXB0cVEURVEKp6GLCxF9n4g2E9EKSz0R0TeJaDURLSei6ZG6OUS0Mqy7pn5RK4qiKFk0+pvLjQDmCPXnAJgS/j8PwLcBgIg6AFwX1h8B4BIiOqKmkSqKoijONPR3Lsx8HxFNFA45H8APOXguwINENJCIRgGYCGA1M68BACK6OTz2Scnfpu27ce2dKwEAE4f2wTunjwUALHh0PdZueaN83OmHj8C0cQPxxp59uOkvz2H33v0AgG4dXfDeEyZgcJ/uWLVpB3772IayzfD+PfG+EyYAAO544iU88eK2ct0JBw3BSQcNxZv7D+DGPz2HHbvfRBg33n3sWIwb3BvrXt2JXz68HqVHIPTv1Q0fmDUJHV0I96/agiVrXy23d8ToAZhz1EgwM374l+fxyut7EDaIC6aNxuRhfbFlxx787KEXsG//AQBAz+4duOzEiejToysefn4rFq/cXG7v4BH9cN7U0ca+OOPwEZg6biC2734TP/rL89jzZtAX3bt2waUnTMSA3t3w5IbtuH3FxrLNiAE98d7jg7743fKNWPnS9nLdWw8ZhuMmDsab+w/gB39ai9d37wMAdOlC+JvjxmHUgF547uU38OtHXwTCvhjUpzsuP2kiiAh/fHozHn1ha7m9aeMH4vTDRuDAAcYP/vwctu3cW+7bd00fi/FDemPzjt24+aF15b7o3aMrLj9pInp268CDa17Bn1e/XG5vyoh+eEfYFz/96wt4aduuct3ZR43EkaMHYNuuN/HjByt90aNbBy47aSL69uia6osJQ/rgXccG4+w3j76INVteL9edcsgwzJg4GDv37sONf66Ms44uXXDJ8eMwvF9PrN68Awsf21jui2H9e+J9x48HEeEPT2/Cshdeq4yzyUNw0sFDsW//AfzAMs7Wb92JXyytjLO+Pbvi8pMmoXvXLqm+OGbsQJx5xAgAwE/++jw2bduNsEGcP200DhrWFy+/vgc//WtlnEX74pEXtuLepyvjLDrnfrF0Hda9urNcd9aRI3HUmAGpOde9axe874QJGNi7O55+aTsWLa/07bD+PXFpOOcWPb4RT2+sjDPbnOvo0gUXzxyHEf17pubcwN7d8YFZ4ThbuRmPPl8ZZ1PHDcQZh49IzTkiwjunj8GEIX2waXswzvYfCPqiT4+uuHzWRPTo2iHOuVuWrsP6SF+ce8woHDayP17buRc/fvB57N13oNwXpTn31Mbt+P3jlb4YM6gX/ua48QCAW5e9iGc3V8bZqYcNx/Txg7Br737c+OfnsGvvvnJfXDJzHIb375mac8P69cD7TpgAIkJemv1HlGMArIu8Xx+WmcqPNzVARPMQfOtB95EH41t/XA1mgAg4b+podCHC39/yWLmMGXhiw3Z87/Lj8JdnX8FXb18Za29ovx64ZOZ4fO+Btbh5ybqyDQCcfeRIDOvXA59ZsAIvv76nXLd41cu49cqheGLDdnxp0VNhXEHd/gOMfzj7UPx8yTr89x9Xx9qbdfBQHD6qP770u6fw9Es7ynVD+3bHnKNGYv3WXfjcwidi7W3f9SY+f96RuG35Blx71zOx2A8Z3g9nHjEC37jrGTyw+uWyTc9uXXDe1NHYf4BTffHkxh3438tmYPHKLfjaHfG+GDuoNy54yxh8575nceuyDam+GNq3Bz71y8fwxt795bqHnnsVN887EY+/uA1fXvR0rL1uHV1w5WkH40cPPo/vPbA21t5phw7HxKF98PnfPoHnX9lZrhs3uBdOP2wEnt3yOr5425Oxvtiz7wCuOecw3PbYxlRfHD1mAGYdPBRfvf1pPPLCa2WbXt068I6po7H1jb345wWPx9pb+8pOfOuSt+DelZtTfXHQsL6Yc9RIXL/4WSx8LN4X500bjW4dXfD3tyzDgUjfLnluK3427wQ8uCY9zvr27IoPnTwJ33vgOfzsoRfifXvECAzv3xOfW/gE1r26q1x37zNbsPCqk/HkxvQ4e3P/AXxqzmG4Zck6fPMP8XE2Y+JgTB8/CP9++9N4NNIXowf0xJlHjMArr+/BZxasiLX32s69+ML5R2HR4+m+nTK8L846ciS+cdczuH9VZZyV5ty+A4x//OXyWHurt7yO/3nvsca+GD2wF945fSy+s3gNFjz6YmKcjcDwfj3xT79cjh179lXm3DNbcOtVJ8fmXIne3Tvwt6dMNs65Uw8dhsnD+uILv30Sa19+o1w3ZmAvnHH4CLz4WnrO7X5zPz597uFY8OiL+Mbd8b6YPmEQjps4ODXnenQN5tyuvfvxqURfvPjabnz9PVNx91Ob8R93xtsrz7nFz+I3iTl37tGj0K9nN3zylsew7wCX6x5bvw03fXAmHlz7Cv799vic69OjAx9+62TjnJt9xEiMHNATeWn0bbEsTMsmC+XpQuYbmHkGM884eswArJ0/F5+cfUi5A4NjgE+ceQjWzp+LqWMHYH9YWXr93cdOxkOfOSMoO8Dl19EDemLt/Ln48oVHAwAOhMcfYMb7T5yAtfPn4ozDhuNAxAYAbvrgTKydPxfdO7rEfHXv6IK18+fihkuPTfk69+iRWDt/Lt5/4oRyecnfte+ZirXz52Jwn+4xGwBY/vmz8LuPnRw7n/0HGDMnDsba+XPxf089COE/tMDMYAY+OTvoi6PHDIidEwD84ZNvw33/eFoqvsnD+mDt/Ln40oVHBccfqJzX350yGWvnz8WJk4eUfZXqf/ShmXj2y+em2uvfsyvWzp+L/7p4Wir2d04fg7Xz5+Ldx44tt1eq//Z7p2Pt/Lno1a0jFfvjnz8Lv/rIiXFfDLztkGFYO38urnjbQalr/8ULjsLa+XNx8PC+5ZhL7d37D6fijo+fEivbz4yDh/fF2vlz8Y9nHxr2a3jODFx9xhSsnT8XJ0weHDmnoP62j56MFf96dqx/DhxgjOwfjLOvvPPoWGwHDgDvPnYs1s6fizMPH5G69j/4wHFYO38uenSNj7OuXQhr58/Fjz90fMrXqYcGfXHxceNSffFvYV8M7ZseZ4999iz8/uq3xvriADNmTBiUmnOl12vOOQxr58/FYSP7pdq77aMn4/5PpcfZpKHBOJsf9kX0+v/tWyeV51x0vADBnHv6i3Ni5xOdc9+65C3x63iAceFbgnH2nhljK+cU+vv6RcGc69O9IxX7yn+bg5/+7fGp2GNzLjE2//ncoC8mDOkd8RW8/uma09NzjlGec599+xFhW5W++NjpB2Pt/LmYPn5gqr2FV83Ck184OxVfac599V3HxPopL83+zWU9gHGR92MBbADQ3VKuKIqiNAHN/s1lIYD3h6qxEwBsY+aNAJYAmEJEk4ioO4CLw2MVRVGUJqCh31yI6GcATgUwlIjWA/gcgG4AwMzXA1gE4FwAqwHsBPCBsG4fEV0F4A4AHQC+z8xP1P0EFEVRFCONVotdklHPAK601C1CsPg0HZy4V8nm7aCmodnjawS5bzc3sCvzxlxNyFXelk+3V2xzZh9NPtyTnx/OxzTZeTX7bbGawjBfj+TGY9Im+mqykz26+7JZlWMwxmdvqOzLcoz5nFjwJdhZYiz59u0/Wz+J8TnEbgjQHgMkX7Kd9GFgqqv0kzRm3K8jLP0n2bFwgaWhnjV/pHOS4jKPM/M1qbzPng+msmSM0txx6gtre4Ktp69k2ylf3texutWqLRcXk3S7XGaopPC/tA3Z25N8pf6Ivzdpy0v+TTK50uHGuoit2ZfQnrGO5PP19WW2iPRtzr6wxG6yEm0Sr0k78fpK8VmO8j4n+Nflbs86cIMi77GULorZ+V+P7Ploq/Ad05Xzcv+8yJoHtjgpKz5h0PjER5XBWQhtubgoiqIotUUXF0VRFKVwdHFRFEVRCqfZf0RZU5izNs3sO37SZrptY1S2cd+4lTYDZYGAvPkpb9qb4rMHYqty6gtj8PLmtc/mbNRHWizhcj1Mcch2PuMl21f8NVXuK76wiSVcbEx1UhzWvrDbiMKHrA1z32tlicNFzCEKM2x9a7QxxxA9XhI3WGMw1Tn0bV70m4uiKIpSOG25uJgVFPHX+PEWRYZoY2/RJsqQYnBSkhWk7iqrbuxh2G0kJYxFTSSqjIy+4q+mCHOpbjx92ZVuso21LlMh5T6WgrpSX8RrZbWdMG6zYhdtciiuhM6QFWFmX4WqHDPGZ6HqM8ukc5mnXvEVKxZrz8VFURRFqS26uCiKoiiFo4uLoiiKUjhtvbiwRV/hlvLEXU0kpnoQJDl29ZldVeUUXx4b376A2ZmoknFSwdmUc56qG0udmPIkt0qvOEVYcLxFgSQE75Qmx0NxVfLho+AqlUl9YYxdUjul7BPlki9R+WUpN8Zg71vLNJBVXw5KPFvs4vUQ0wwVT1svLkUhbfY3K04xN/DEnMIrbOuxRajD6RbuImeDzTSnJGFGZ6SaRxtH0cUlRM5JJSuJXNqNlVlUN9XkYbIdZVNISfFJ5Mv5VKqzxWcPInfuLovqRlRVSdfKS4Ek20i+xJxPBkQFV8JnusLarL9CymIjIanWJD9RW1OlX9/KNplYwhDngdTvxrIMxaeoxLP7cvFdDbq4KIqiKIWji4uiKIpSOA1dXIhoDhGtJKLVRHSNof4fiWhZ+P8KItpPRIPDuueI6PGwbmn9o7eTflhYc1Ptcxs6I3l7pBW7splCbsX+KxqXLsj7rJd60rDcYkTUAeA6ALMBrAewhIgWMvOTpWOY+WsAvhYe/w4An2DmVyPNnMbML+eNIcgtJtRbbGyVWRc3b84nq+JKsBEfDMQw3mDNn/NJiCOlQPJX/sTqUuWSCspsEy1MxWc6NuXLb2JbVTyCtXgdBTVWXhuznVlFZvNRsZKviU/uuFg7otLNUi7GaSqz9GmiXVN8meouSpeL8fl1k9Umr8qxlXOLzQSwmpnXMPNeADcDOF84/hIAP6tLZJ60onLEJeZGnpWLYqWZFEX1oB6nW3Sf5m2uua6te0qWzkBnSP8yBsC6yPv1YVkKIuoNYA6AX0WKGcCdRPQwEc2zOSGieUS0lIiWbtmyJSwzHhe8mtqw5DlyUWH5qKeycoS5+kyWSQuJrwouqy/8n5hn91Xy5xefvVlr7A6+7D5z9oWH+kxCVOJZxqCouEocY7SzjE8XFZ8xPouhNA/MKi1hDmcq+9z8p+3NMfo/QVU4L/JXhOVSORa8YjZycTGdie2L2DsA/ClxS2wWM08HcA6AK4noFJMhM9/AzDOYecawYcOqi1hRFEVxopGLy3oA4yLvxwLYYDn2YiRuiTHzhvB1M4AFCG6zKYqiKE1AIxeXJQCmENEkIuqOYAFZmDyIiAYAeBuAWyNlfYioX+lvAGcBWFGXqB2wbS42K80dXWPIe8mkDfNakzvmKkIuemjXo/eafj46xCel8WkWGqYWY+Z9RHQVgDsAdAD4PjM/QURXhPXXh4deCOBOZn4jYj4CwILwHmFXAD9l5ttzxeGt1JFyAskX16w0yVYgWUQ8cs4no//SERa5mNFGUncJqqCEz6zyaGGevG0m5PjMddI1lFU3gh0YbOhvOYedvS+S8aRthTIPdVJeJVG0n1zvfbuoukTVmq0vxOspjTM2l9vDdFDpUfpYh/GbVRavt7fjMld8fGXR0MccM/MiAIsSZdcn3t8I4MZE2RoAU/P6FTcyfdKGQNiEy5GWIytNirUuU4xgKBd2Z7MfCmX2Y4/PYJDhS9w8dhA+WDdGTTE4bMCbyNqA9/aVsbGde1M3USlvpMvXPtpu0srXJnlMvD1LupbEq9GX5TrmvfayiMa/L8xzLv6aas9Y7iBGyNO3Be3r6y/0FUVRlMLRxUVRFEUpHF1cFEVRlMJp6J5Lo7FviAoby2XbHJuLQgyieMCaq8xTjGDdxLbbJGMx2hnjMAsB5AdJ2eOwXRPRRozPbCduHqf+sPtMlhWV+idal+rbnKlwrA+lk+JzmCOmHf3MvpBi99iQrjblie2sZJGPfVM867Mm7cm/LzgSi8nG/HmRPWbyot9cCqDY37XWh7y/Pq4XbpuKrdjz+anH2Raf/iVfg82UXkX8RX0nRDf0q6CoByG5pX+xy1CSNZT6w9Cep6rFppASXGUOLlkJY/JhVi1F7WwufeOTVDd222zVjTl280en+PAxIfhMZZ/Fyu4rekTcj6ncdIzRzurLUxFWVjma7eSUMZLiyjxJJBtT7E7/APOYc+JnjHBeQeyCb1/1WVZ7BdGWi4uiKIpSW3RxURRFUQpHF5caYNvEVlqH/OlfGkfucVZF0MWnf6l9Dzb9dHQI0PcZO42grReXrIct+apuMv35KoYsdS4KD1EhZYvP08ZN1WJRuvkqmmzqLuF8k8e4+HJLa+I3sTnDxiX1SbwsQ4FkTCXE1jqbnZiaSOynDPWUoLgytueigkuOC6eUJ+6+RMVV6hhDfCZfzDnik8k9T3P4yqKtF5eiaEXliNPDwhp6Xi7x1SGMJqIe51u0i7wxN9Ol9U0L1OoU9fDDtlxcxDw9VvWHpDSx+/DL+SSolgSfWfmbXFRtJl+24/M+fEw8L0uQuVV61hxxgipIyrNm8mXzk7A1x+kRn4MKSxyfiSpRmZQ4xtSgbf5451mTfAl+rHUUf03FZ7QR5r3LP3AsbXrnxJPas0YvxRB/TdZZZpvVRx7acnFRFEVRaosuLoqiKErh6OJSA9Kb2E0m4zDQbA8aajS5hVcN7MYGiMUKH9n16L9mH+ounxdSiqRmoa0XF2ueoyoVUlZ/vrnArEoYKT5BWVNuV1bJmdrzVXclfSaNvGO3+pJsJAVS9jE2K9+JbVMFVa6jaVy4KLUs19EYQ9I2G3Gsu9hbrqOYj0xoR8zd5WGTFZ/JrlrFle06iv3oqdKz1uf+PKtusWro4kJEc4hoJRGtJqJrDPWnEtE2IloW/v9ZV9t60orKkc6QW6wV+70a6qIWK9hHbrVYE11c3wfgtTpFnVvDsiITUQeA6wDMBrAewBIiWsjMTyYOvZ+Z357T1uLbXmbRlBg/yVzUNn45n+ztuqhacuV88pw4ViVMOT5BPSXZCRG6lcV9WBVDnkodZFzHPEodmy/KsBHCE7vJPs4c2jXa2ZRuQnuefWGryLq+ki9vlZbLP3CsB9nnlfg0WZ/YHXLYBb7i30CCeVD7BbOR31xmAljNzGuYeS+AmwGcXwdbRVEUpcY0cnEZA2Bd5P36sCzJiUT0GBH9noiO9LQFEc0joqVEtHTLli1FxJ2J7f5vM9MKMdaT/PebG9eReWOu5toXn/6l9jTbxncSlz41HtJkp9XIxcX0JSzZPY8AmMDMUwF8C8BvPGyDQuYbmHkGM88YNmxY3lgVRVEUDxq5uKwHMC7yfiyADdEDmHk7M78e/r0IQDciGupi6wIjQ4FiVGuk1Smle5WZ/yISVEZmW3Odi8LM6F5QapnKiRyVOnmUbmLsnPrXg8lXPD5De+V27dfRRJaaTlJjGe3sjqy2Jl+le/VSH+aOJbSL7ge45FmT6hjp/QW22KbLInEIPvPksKtUuSnJgnEWnzuxfirLsdw+L6KhuSgaXWO21bvMU5O3ar8INXJxWQJgChFNIqLuAC4GsDB6ABGNpHDniYhmIoj3FRdbRVEUpXE0TC3GzPuI6CoAdwDoAPB9Zn6CiK4I668H8G4AHyGifQB2AbiYg6XeaOvq2ycPE5CtNDH6EJ6yZ/WVoSSKtpuMz26XkfNJUN0Yj8+KT3Diq6yyxieqnLJ9+cQgKt1s6jOX+HzUZ/bmMq99cEy8NluhZxtnspwo6ymb6bKyobONZJKVZ832lEdY6vLI4bPGs60uM3bBd55+8h1neWjY4gKUb3UtSpRdH/n7vwH8t6utoiiK0hy09S/0a4Vtn6GZaYUY60leFVRrpn/JH3TRyqt6pCFqdmWkk1rMuH/bXOjioiiKohROWy8u1pxPTv9yqBxUVov5i8Vy5hazK8wkhVS0XdM95qQNgRyVaXaFis1Gjj19r9jki0CZuZvitmZfNrsibEp1cm4xN1+VcZal+hNUSxnqqWi/i088lZRWEbVl+jpKusgKMbsMxZWpLquPIs0ay+IqvfT1iPeTOYZYfEZf8ve+PJ9NPvnSomXxcUZOvrJoy8UlV1oOY0OCD+EY24aqtHlczWa/uHFrKsvajJT6T9wUt2/qWh905liWrLT5EtOGSGk5LOk8pId7+YovYE3Lkb1RLvpKVInjTEAUN2SNM4954GYjCQTsdjYb99GXbNe9PaeHAdpi951zGfPRV4iSh7ZcXBRFUZTakqkWI6IZAN4KYDQCOfAKAHcz86s1jk1RFEVpUazfXIjociJ6BMCnAfQCsBLAZgAnA7iLiG4iovH1CbO1SP+ivtl0HGlaIcZWoKG92ACFWysOm2YP2U2BZ99jbBakby59AMxi5l2mSiKaBmAKgBdqEFddYOTZhIsfA1Tu/2ZdW9+Lb4sjjwggVgfzfd+UCUXFA+7xlcqMm+yOKWNsezBZaTmMvoR2fB5cVfHlblOqlB8UJ9SZm7Pa2YwqG99ZQg9HmwwBg+0Qhu1842Wx/fxEuyY7nzRDErYN7uR4cY0PmX0hxGKcP/44fZ5Fz7cqbxWsiwszXycZMvOyqjwriqIonZZcG/pE9Pbso1oLOS2HRcUjN2g9pqLkoES5pISxN5j10CeXh5q5QuF/tna8lXiyXMc7LUeWWsc7dsFnluqmKGWfiwpL9GVt0G9cyP0kpxmSfFjT8ghlZkWloMayKedKNrnVU5Y5LCkjxYlg9iCOW6ON8FlCtviKlYvlVYsdV2gUiqIoSqci1+LCzJ8rOpDOhKZ/aX3yp39pXE/m9dxM174u3ddsO98J8qd/aa7zcpEiv99Uzsw/LD4cRVEUpTPgkhU5egusJ4AzEDwhsuUXF7aoeJBQhsSr0vKPZFoOqz8xLYe7tFBUf4jqroo0xHSLN9keRcrMShhZSeaqtkvGl0xDYrMjZPSFFLuoWjN3vItqyWzHYE53uGsKlRLJtBxWVZupTOyLil3svrtgI430mOovcSGDOZdN1E5OM2QLovQiqeOkOcfGY+X0L9LnhdmXPAaMQVuPt1VnPbAsFiein2eiq0wyFxdm/mj0PRENAPCj6twqiqIonZk8ey47Efy+pWqIaA4RrSSi1UR0jaH+vUS0PPz/z0Q0NVL3HBE9TkTLiGipp19DWfhqyVkk5Qoy+pByPiV8pmIQFUh2DY1V6WaN0tYXsorIOz+XEF85dps/Y5kUn9AXtnIXZZ9rcLBf30xfFhvpAsq+zGNQVC2Vj/GcI+R2XYxx+Ng49YW7LxeloIRfbjGH+GwqQmnOeSr7bGdWdG4xlz2X36Ly7akLgCMA3FKtYyLqAHAdgNkA1gNYQkQLmfnJyGFrAbyNmbcS0TkAbgBwfKT+NGZ+udpYFEVRlGJx2XP5j8jf+wA8z8zrC/A9E8BqZl4DAER0M4DzAZQXF2b+c+T4BwGMLcBvzUndqmwuEYeRJhfQ1J28yptGdmNepVo1Crei1XH1UDw1+1B3iU/aV2sWXPZcFtfI9xgA6yLv1yP+rSTJhwD8PvKeAdxJRAzgO8x8g8mIiOYBmAcA48drKjRFUZR6kPcX+sYPct9mDGXGtZeITkOwuPxTpHgWM08HcA6AK4noFJMtM9/AzDOYecawYcNS3kTVkqh28s/74/3AKJuSTFLCSAqfiMrIeHs1qRYjs5okebgtV5SsWpJjT8ZnU0+5KInEvF6mGA1leW1Kdr4KLps6LlpqVRMauzb7n7Wc6HiXsWlsJ/KaGmcsn28JitXJ81HKwZWljnOxi82DcnksQjE+uy9ZOuer0iu3abExz7l07K65ErPI+wv971TpFwi+qYyLvB8LYEPyICI6BsD/AjifmV8plTPzhvB1M4AFCG6zKYqiKE1A3l/oP1yA7yUAphDRJCLqDuBiAAujB4Qp/X8N4FJmfiZS3oeI+pX+BnAWgufMOCGrp8xlvmqSPAokUWmSEZ+1zlIuIZ6Xpd5F6WayzMwvJbZnjk/ylVd1Y6q05tOSclxlKfs8c9iJTze0jTPBJmkbj8NfiRettznJekqkKS7fp3za7Cpzzk+ZZosxr/osK0+YfH19x4w5xoLFYk5qsWEIbkcdgeBHlAAAZj69GsfMvI+IrgJwB4AOAN9n5ieI6Iqw/noAnwUwBMD/hINiHzPPADACwIKwrCuAnzLz7dXEoyiKohSHi1rsJwB+DmAugCsAXAZgSxHOmXkRgEWJsusjf38YwIcNdmsATE2WNw3mLZKmptnyEjWa/LnFio3Dy3ed7YDiz7ce/ddsqqokbrnF/Pd8643LbbEhzPw9AG8y82Jm/iCAE2ocV0sh/eiwWXGJuegU3D60Yp/Wmnp0SdEu8sbcTJc/7y2zVqWoc3P55vJm+LqRiOYi2HRvid+bZBGoNdI9Kap4INRl/NPBWzFksRPVbIljXH3ZbFzVZyYzUcVjsbHWWXxlKYmsdQl7k53NxlfGY+2L8jkJ/woVz8vs1PeplzZXYt47ayuR4412LOfgEuKynq2xj9ghTg876VpJ8yBj/ojxCe1ZbTw/l1zmXF5cFpd/C/OJfRLAtwD0B/CJ6twqiqIonRmXH1HeFv65DcBptQ2nPsh5mAx1Fr2GW54je63tSZSmexNZOalKcZrs5JxPbmVRZ96KJslX+dWiGMqrurGpsYydW6lPV8lqrDx5ouJHpe3SNg63MHPlsBPGhdGHVCfHKF97H5t8SjxY7MQ553CTMK24otiryZevEi9zzkmfF1551oq912fdcyGifyGiwUL96Z3xccdFkPzq3MgHSLnSAiHWlUZsjldL7mtYRdBFn29dNvSbbus7SXZ85ttYzXVe0jeXxwH8loh2I3h+yxYEUuQpAKYBuBvAl2sdoKIoitJ6WBcXZr4VwK1ENAXALACjAGwH8GMA85h5V31CbH5aUTjiEnOzK2KaPb6iqYd6r+hbI3lba6RSMUnedPytSlHn5rLnsgrAqoL8NRWmHFaAo2rJ+A1U/lpqVt1w7NXFl6j+kNRTCZ82f+b4PH1ZlDAsSGucYk/2ReLVVOujPgvKbP0jtCepnZjBhpFmO6dooZgryurPFJ9sY6rMqyTKtPNVNAlKN+s4K9dLKjShbxN20rVyU3y6z7lKnel8Mz5jhDL/2Ku7zZY3t1hLk2tT3HPDr7r0L8LGsq8YgSwpSkRf8vHm/VKzSCEal7QRbE3/ImyMSsf7bRLbyUyt42kjxmGxc4pP9BGvzdpIt8VXqTOPGd/0L5mpfwQRjdh/Hr6kvnBL/2Ju0Fe8knVe4pwT4pLnXG2/f7Xl4qIoiqLUFl1caoDt1o3SOjTiwVvVkv8BZ/ljLjz9S7HNmX00+YR0S/+Sz66eZC4uRHQIEd1DRCvC98cQ0b/UPjRFURSlVXH55vJdAJ9GmAaGmZcjSI/f8gR7i/ZNM9cN+NKty+LTv5g3dcUNOtFXZcPcdLs1aUMU8eGZygWWtByRWkN8lbpkfKZrQqCyc/FfcsJ19N1czvRlOt5q4ydgSI0zi0/fcRa1i3a7y0a1FEAwzihV5SIQiJqJYxr2jf6sOF1TGpHBR/S8ZFGOcI3Z/1tj1tHiA8GMAob8n2dZuCwuvZn5oUTZvurcKoqiKJ0Zl8XlZSI6COGiSUTvBrCxplHVGFHR5CGgcFFh5UvLYfclqbvyaD8k9ZnteN9UHnLaC7udXGGPz+SrGsWaZJe7L4w+zHVOaj+znMho73S+xjkiKZCyxo1p3FLs1XCAtUicB2LKk4Ryrjxe7DYSuZR9Oc5LtPH8PLONz6LFYy6JK68EcAOAw4joRQBrAbyv2DA6F8lvk8220WaiFWKsJ63YHXmvYTXXvuhUKvUQRDT7tXWJr9nPAXD45sLMa5j5TADDABzGzCcz83NFOCeiOUS0kohWE9E1hnoiom+G9cuJaLqrraIoitI4rN9ciOjvLeUAAGa+thrHRNQB4DoAswGsB7CEiBYy85ORw85BkMtsCoDjAXwbwPGOtnWjmVJVuJMdc2MfFlbMMZ2Jepxu0X3aGS5Ru6V/KerspNti/cLXQwEcB2Bh+P4dAO4rwPdMAKvDRxaDiG4GcD6A6AJxPoAfcvBd+UEiGkhEowBMdLDNJDMth9Em/mqyszu0FxltLb5YUn+4qLtsKiNPRVh2Wg5BxSP1n0c/Vc7JTzHkoiay2gj9ZLXLUGnZfZmOL11/mz+brkq+jZVOeWK/+i5pVWzqKd9UI7nSDAlqwMox9lJrmiFJKeio+ovG6JL2JqvM5M85Bin2Ku+9SYkr/xUAiOhOANOZeUf4/vMAflGdWwDAGADrIu/XI/h2knXMGEdbAAARzQMwDwDGjx9fXcSKoiiKEy5qsfEA9kbe70XwzaFaTN+9kmul7RgX26CQ+QZmnsHMM4YNGxY06vk116aQknB7sFJKryHYxF/NdTYljBCn4Mt2vG9upIqtZGc2zBOfyZdNoSfZROOy5tOScp95KAWjZanrKIxOUUVoGYPS+SaPMZYZY5dvokrnaxWLCRffP7eYrVKacy63ji0xSOo9oy+7ne0hd9L52uKTfDVCLfYjAA8R0QIEH+AXAvhhAb7XAxgXeT8WwAbHY7o72DYM++2F5qUVYqwnjVBeVUtD1GIFn289uq/ZlZEuijnpNnCz4KIW+xKADwDYCuA1AB9g5iIeErYEwBQimkRE3RH86n9h4piFAN4fqsZOALCNmTc62iqKoigNIvObCxGNB/AygAXRMmZ+oRrHzLyPiK4CcAeADgDfZ+YniOiKsP56AIsAnAtgNYCdCBY5q2018VRDK6qWml2N5fT88jrE0UzU43oU7SJvzM00p6QfKXZGijo3l9tiv0Pl22ovAJMArARwZLXOmXkRggUkWnZ95G9G8CNOJ1tv/5CVOnkVPnabfOopu0LK3SZaaFUZmcoc8l/Z2hKVToI6xeeauDzAS87d5X57QX5wmtmmZCdfe5P6TFJc2e2y4svKLeZqk6mOE+xElaPUrrHMoj7jSn1WnEa75K1toT1pzmWNaXkO2X1ZbcRzMvkQ4qvyJqXLkyiPjr4Pf8j4d1V5VRRFUTo13s9zYeZHEPzupWWRlCG2nEr+T0S0O7MphmTllIPSxOonW21ksjMfT/I5eSrJsp8caVJcZcvFbPm0TJ7y5GEqHZ/HJqhzV2o5qeNyjTN7u2ZFmLUqsz1JfWZtz9PGrgiz2zn1hYBN2VfkPCBLhXjtRZWjOcaifzTtsucS/aV+FwDTAWwpNIpOhu32QjPTCjHWl3wd0oqqu2oiLvxs69B9zX6N8kbXbOflsufSL/L3PgR7ML+qTTitSSvu7TV7zM0uOGgMtT/h4p+rnq+9Wj/f3QfpG2hnpKhTc1lcnmTm2C/yiegiFPMrfUVRFKUT4rLn8mnHspaD2abUKb2aVC2SAkn+Wmq+9WTXa9hUHrICJTs+q8rIW1WVrfyylcvqLnOtyU5UzkkKHweVmbU932vPGdfD11eG6k/KE+Wi8ko2Iw5bocqaCyy3+sw8R3xVmJJX2zk7qRylcWv5nBFztBl9Zdz6yj3O8in4JKSsyOcg+I3JGCL6ZqSqP/RJlIqiKIqAdFtsA4ClAM4D8HCkfAeAT9QyqJojPbnNdLjZxHpvkrliQKDUvwCy1V1CyJJ6yqKQkkVBQW0sxAwVnKxOsfvIlV/KVCaqkszn7KSqipSVrlmWwidZzOyoPpPUWB43vaNjyfac93SU8femf7Wan4hoUCAxOyngxDlH5m+ZeZ8Ym6nU4uix2TY+uCkP5YFh+rxItheMs/i8YuN52WNMf14YDq4CKSvyYwAeI6KfMLN+U1EURVGckW6L3cLM7wHwKBGl/mnDzMfUNLIWohWVI25qrMadmIvnZlIU1YO2Sv9SbBjVIXwb74wUNa+k22JXh69vL8SToiiK0jZIt8U2hq/P1y+c+hJkfDKs0k4qKH91hX/eH1Gvk0PplhGfpLrxtbPlfCq36+erqpxPkrKpKKVbhnpKtJH6ydiefXxG631sjHY51XFZikB/9Znsy/f6SnX2HHbG4lh8PmMpqMt4EqW9SrCRlHPCuMjhKwvpttiOhM/SVli4d8j9axBPXbCmWIB9o9V/Y1loz7LBnSUqsNVZ9vPFGJI+TXa2433jy5PypJr4glcylxttHMQItk1YTxvRl2UDXk7fI8UOY53TprgkOHD0YzomXhY9X5OoQGrHb7PfmvLEwUYi1beW8mxf8ddkHCT0T/6H98nvq0X65tLPVqd0PlweUNRO5O2NRnZj7pgb4NPaXh36r9lHukt8eTIm1xuXX+gjzIR8MoL4H2DmR2salaIoitLSZP5Cn4g+C+AmAEMADAVwIxH9S60Day1aTznS7A/jyvP88s5OXc63YCd5m2smIaD4u5ROSFGn5pL+5RIAxzHz55j5cwBOAPDeapwS0WAiuouIVoWvgwzHjCOiPxLRU0T0BBFdHan7PBG9SETLwv/PzRWIZTNQ3kwNXz0376ztSZumYp28MSpvprsH6HK+1jQfnmlXku0a40iV23danQQCHrcXpPQ0WeeTV3zhm9Ymy0aKNJ3+hWOvWT5SdpYLKW0sS3H5CAtyjzOLHSfqTZXenxdCbPb48tt4f15UeZ/NZXF5DkDPyPseAJ6tzi2uAXAPM08BcE/4Psk+AJ9k5sMRLGhXEtERkfpvMPO08P+qnkipKIqiFIvL4rIHwBNEdCMR/QDACgCvE9E3EznHfDgfwa02hK8XJA9g5o3hg8nAzDsAPAVgTE5/MYxfuYVUKQQSU1FIPnzUUy5pUmRVkE0h5fdFNyu1hm9aDkr9YbIzO/VNy2FVnZlSlyRsRF+W2KVbJrLiyh5HKi1HuplUnagY8rCRfNrVZ/a5k4zF1KDteuZOMyS0lVZ3ZdtI2PvCdH1zqv7IMm5d5pyHkqzoHyW7bOgvCP8vcW8BfkdEfkezkYiGSwcT0UQAbwHw10jxVUT0fgT5zz7JzFsttvMAzAOA8ePHFxC6jJQ9uJlp/gjrS95L1sgHNuWOuYqQix7a9ei9Zp+PLvHlyphcZzIXF2a+KesYE0R0N4CRhqrPeLbTF8HDyT7OzNvD4m8D+CKCsfhFAF8H8EGTPTPfAOAGAJgxY0ZNer+ZNh9dyfOvsnri5LoF+70a6pHupui0JvnTvzTPxfX9rVWrU9Qwc3nM8dsRfIBPCI8nOPyIkpnPFNrcRESjwm8towBsthzXDcHC8hNm/nWk7U2RY74L4Las81AURVHqh8uey38CuAzAEGbuz8z9Cvh1/sKwTYSvtyYPoOCfad8D8BQzX5uoGxV5eyGCfSBvGNUodUztyV+M5PQLkprIHIeknvFVSNlsIKhustJe+CrWxAd4Wa5J7rQcYuzuKiyXSlvKE7cHz7mru6Ryqd9tdi7zwCeuUhze7ZVfzXPVN81Q5RhhzqWlc7F6s42hTphzmalrjPFlfMZIZVI/Ofr3wWVxWQdgBRd7Q+8rAGYT0SoAs8P3IKLRRFRSfs0CcCmA0w2S468S0eNEtBzAaWj158soiqJ0Mlw29D8FYBERLUagHAMAJL9N+MDMrwA4w1C+AcHTL8HMD8Bya5OZL83rG5CVOjZVhk1Flo4tXkdk/7enLeeTUeHhkq/KZiOq2igWt81HpDKjL9xVSy4xSooh8/GW9oQYTKql0r/aBLEYyOCHOdvGVmlVdznIxYJxxokqs0IurRZKj1BXpVss9as4bKQ5VynLGodi32aoz0p2MR9Cgy5bD2nFpz0GSRkpnZepPBhn8dLoVcyVw87iOy8ui8uXALyO4Lcu3Qv2ryiKonRCXBaXwcx8Vs0jaWFaUTnipBarfRhVOW8mRVE9qMfZFi1Iy3uNmkmBaf6W1EQBFkxRp+ay53I3EenioiiKojjjsrhcCeB2ItpFRNuJaAcRbc+0agE4kIuly0UFV0nhY1eZWf3ZYrDYVtRENlWLp9JNUEjZbeKxGH1Z+smsPkv94ejLfE1EFVSGUsdmZ7uMoirIYlM63jeHnUvOp6w4jTYeshz5fCUVlmBnG3tSHBmx537InUffuqgLvR/Sxhn96Kmqi8biHJ/0GVOlhMvlR5T6XBdFURTFC9fnuQwCMAWRBJbMfF+tgqo1Pk/ZK5VJNlE4UUeg1L8A8jzRzy23mLnCQWwU+6daVs403zxRYl6vjBhFxZUlPlMcYt9Kqr+oGit1HdOWDKCLpFrKyGFnjN1BhWWOL9sGMP8L1bxXko6P2awiS1k6qpai/7rOr7gSxhnFn+noYiPhM+fEz5hofIbrmFIloiJLNCo+Mz7PpNiLwuUX+h8GcDWAsQCWIchQ/BcApxcbiqIoitJZcNlzuRrAcQCeZ+bTECSQ3FLTqFqMVlSOuD0fvHHn5fQbg9br9qqox/kW7SJ/brHmoe1yixV0di6Ly25m3g0ARNSDmZ8GcGgh3hVFUZROicuey3oiGgjgNwDuIqKtADbUMqh6wfHfF1fKq1DqiP68c/sIdcy5chnZ2suyMR9vPyZQSEmKMLONLT6rnahYS/6R9mXCWufQtzYzoyrIQbFm7gv5QvrmsLPZySojazPlSquKUFBcGZsTlVqyms1l/LrYVd4XOabNfSGRdXhR6jgXX1m4qMUuDP/8PBH9EcAAALdX6beh+GymlgykDcQopUkS3TRzT8shbfYKsVs2VCn1h902tpFqPzwQN+RNyyHV2Xef3cpScST71lxui6EyEaObzsnraIibzRvVqfhEcUPyOrpslJP1w8AmECi1a7LzEbA4pRkSymzpX8ztCHNEEFJE7eIb3/bYXW4L2/bEZWGLyVfF3vR5kTQxpxlKz2Ef8VLRt/qc1GIlmHlxwf4VRVGUTojLnouSQUtu7rnILGsfhd13jn81dnbqsqFfsI/c7TXRxc0rU25ZCjo3XVwURVGUwtHFRVEURSmchiwuRDSYiO4iolXh6yDLcc+FDwVbRkRLfe2zsCpN8qiWLGVma4MvwZlNTeSrJKrEbg7UV3WTL8cV2+uk2C1Vbjmf7LEZ+8KmwnLwZbRjlq9HzpxPfk8Ujdu62Ilj3d5MtopQUvaZ2hMVgbanfGa37JOPLu+8l8aZZVhE6j1VehnxiYowzzHtQqO+uVwD4B5mngLgnvC9jdOYeRozz8hpn0JWwpgUPjYlk0HGnKjySctRqTfd4xWUJhlpQ0S1UfhqSh1hi803LYfUrqT+idZnlaXjsPgxxhB/BSofLqICidJxM7hyrIdSJxaH5TqaiNpY0wyl+iJebk7/IvlKqOqEc0rGklXGGfWQroeDGgtkXqSk85WwKT7NF1/yVYndLf1L+vqyofOk+WOPvRgatbicD+Cm8O+bAFxQZ3tFURSlhjRqcRnBzBsBIHwdbjmOAdxJRA8T0bwc9iCieUS0lIiWbtlSm6w1ragccftXWc3DsPt2OaYF+70a6vFwtKJ95H5YWBPJxVyTnXYWijozr9+5+EBEdwMYaaj6jEczs5h5AxENR5Ad4GnfbMzMfAOAGwBgxowZ1f7oVFEURXGgZosLM59pqyOiTUQ0ipk3EtEoAJstbWwIXzcT0QIAMwHcB8DJPjNGZGwuCrtj4oa0zZ+0YW7ZrAzsLJuBvpvsQuy28qzN1LJh8p6wLb5Eu7l8GW0kX8KGudFOFjyIG6MWO1HckHMT1rbf6ptOxmaXK0UOsmPPJ4YRBAKeaYYqx7jb5RWHZNnJQhCTTcZnjPg5YvfhK7JwoVG3xRYCuCz8+zIAtyYPIKI+RNSv9DeAswCscLVXFEVRGkejFpevAJhNRKsAzA7fg4hGE9Gi8JgRAB4goscAPATgd8x8u2TvipzzyXB8huomSulfAlHVSPJfANb2nFQ37r8Wdsr5VHrQkMHO3GaGL8GHuS7+aqvPKktGmDxE7oP0MeXrKMWBtHKOOUsRJlwTi52LCit9FaPXxKwKKpUa/zUsKRYjZdHUr6JSUPiVO5k63mZjD09WfEb6yaSMNMbusPlgG2eiKjEjr1xKLWZyzOnrG5/DQhw5xlkeanZbTIKZXwFwhqF8A4Bzw7/XAJjqY98oWnFj2U122LgTcwmvM2+qGqnD6RY+lnO210xzSvpHUWekKEmy/kJfURRFKRxdXBRFUZTCaevFxf7ArbzKkAx/UqG3YogzVDKSCs4Sn5RqJI+6K6c6JV9aDs/YBV9WFVYOG6leUnDJvuzj09aipEyrWMkquSwfaV/mOPzVdhmKK6NNdrs+c66662HzJWu/pPPy81Oqyqcky0tbLy61wPupfU1CtXmElIBG9mLeS1jVpS/4hHUUZsuNbcc02xRuz8XFQ0ERLfNRIEnHZOYC81RI2VQobuozoUHL8T6KOim+uCuzU8/wrOqfLNWX1ZeUo4lsiqbS9ZVVS852Dios32uS0Wyu3GcOIr5Ekb3fbfE55csT55xljgg2Ism+MBfHfIufG8Zzzsrn51ln8VW0SKE9F5eCaUXVkpNWrIGn5dKnnVmxY6Iep1t0n+ZtrqkurfiPos5HUeemi4uiKIpSOLq4KIqiKIXT1otL9sN63MrKdQ7+bDaiMsQSh6iS8VSf5YlPtOP86hQfdZeTss9QZ1OfWY+P+XK3CewyNmAlpZupvUQ81nZNNqLKy1RmfhyXyzywjU/zA9oc4rLFJ1xg3/mamcPOM49ZnjxrSVsf/JWHkq/qFAJtvbjUglpcpHrQ/BHWl/zKq8b1ZF7PTSQWq4viqdmVkbmTeDbZLG7LxUVW6hjqyioPswLJ6ENSBVkUL7ZcUFnxZeWkknM+uZVF45DzRBlsXPrCqmiy+zLHZ/Zlu4bxGOwbt1afvuebiMfFzm2cebRnkwsZjzG0l1JIZaugcl17Y5m9c/PksJOVgua4pBjFcWaxidlZfPhcXyB6Xna5WHqcFStTaMvFpXBaUDqSZ+LUk2aPrxEU/Rhai5diW8sZc33O1Q1jJM0TXuEU1fW6uCiKoiiFo4uLoiiKUjhtv7jIOal81U7yhppZdcOx1/jx8VdbnCYrs1LH7suG/LREWanlr1gT1FgWO079YYhP2Pz0uY6y6kZQO8GSw066VrBfq0zVn6nMQfZnV3e5HevqS1I0ScdbVXriOJNUaFLfymPAVJjnabLSmUufF1Ybz3kq+xJdZdKWi4v0YCDxAUUu7ZSPrWxyJi+SbZPYbVPcfbNf2iRMNhyNUTwvssQnihGSf6Rrrfvlgi/z8ebdSnkzNe2rNNnETWpDX3Ci3urL1F7qD3s7yUODccaJOvPmcvJ8TR9Y8gZypY6ZHVOySHOlQjQW//Q58WOMdTBfIzFNioA1zZDxWHuAsetosDONs+S8j89heyBZ46IoGrK4ENFgIrqLiFaFr4MMxxxKRMsi/28noo+HdZ8nohcjdefW/SSisTbSeU7cJk7Nw6iOpg+wWOqynV+wk7zNNdOVzZ13rEUp6twa9c3lGgD3MPMUAPeE72Mw80pmnsbM0wAcC2AngAWRQ75RqmfmRUl7RVEUpXE0anE5H8BN4d83Abgg4/gzADzLzM/XMihFURSlGBq1uIxg5o0AEL4Ozzj+YgA/S5RdRUTLiej7pttqJYhoHhEtJaKlW7ZsqS5qRVEUxYmaLS5EdDcRrTD8f75nO90BnAfgF5HibwM4CMA0ABsBfN1mz8w3MPMMZp4xbNiwRF2GksjYXvyYuJ2srPHPLSYrTURVla8vi6IpWm/3ZVa1iP0nqvTs/pN2WdcjM3ZTjLYYHNQz9jxr9mP9fZmVbnnHmeSTLTayEs/uyzrnpOuR0U++TzV1y9tmsstQ/Xn7ssw5h3Hh9ZmQNI7ZZF/HvHSt0t4KM59pqyOiTUQ0ipk3EtEoAJuFps4B8Agzb4q0Xf6biL4L4Daf2LyVJhZFibTtlSsth9ReFfHlfSiUl42kTimr1oS+sDgVfQnHpw4R/dgVa3JqGPPWp/RQqDzpS1zUfmLslhhcxq/RzjYPfMeZkCrFbhO3NdaJ48ys7jJ5y5f+xW7roiSjlJ4tiJkMH/VSGh8nXzXWJDTqtthCAJeFf18G4Fbh2EuQuCUWLkglLgSwotDoPGmmVBWuuMTcSEWMW3ztRT2GWdEu8sbcTFNKWqw6I62e/uUrAGYT0SoAs8P3IKLRRFRWfhFR77D+1wn7rxLR40S0HMBpAD5Rn7AVRVEUF2p2W0yCmV9BoABLlm8AcG7k/U4AQwzHXVrTABVFUZSqaMtf6Jewpnhw2RTPseHrvVkp2cG8S+y0iW2Js1iBgHnTUcJpUzfDNhWEpS7PdazY2PvJZuebZkhqN3ucSRu34pa+0U5KTWRsRUxpZJYIiGlaBIENLJviTilPPO0yRTSCD9v49Lsa2Zvs4jwQ2pNiz0tbLy61IE8+oKagBUKsJ3m7o5HdmHeYVTM8iz7fekyVZnuoVhKX+Kz/4Gwi2nJxMSuushU+qYd7uaiWJHVSKrePEINdZBRRhphlPHLOJ7eyaJ33w8ecFDQWxZBgIx1vz/kkbM5aFGE2n7a+EM9JUjSV2zWPCxM2m2idLVeZ73W0Cd2kcZv0afJhM5PnotCeNOdSPhyUfQJpO/Nnhasvq2oyI9+frcznoWVFC5PacnEpmlYUjrjE3EhFTLPH1wjqod5rntxizXNx8ya1bFWKOjddXBRFUZTC0cVFURRFKZy2XlyyHoTkrf6wKVfKtkKaCk9f9pQi2ekc/FLXZCuZiovPIXaLwidv7DblklGE4RC7LcVGlprMZBNrN3G8LeWOPT7BV0a/+88DwZdtzjkprsxKLVEFJan0fO0sRm6KSo85Jwz2XHPO3lxGe9UJBNp6cVEURVFqQ1suLt6qJYu8QlJ4iOoum+pGiEFWkpnrbGqhaJlvvq/sfFru6pS4nTkGo5WUqyyXKsgeH8S+qEIdJyp8/G1MZI8zU3zZ/ZSszHN9Y/FZxqeYP0yaB8Y4zHZy7FKdeQzmVUZa43OKweRL6gvzXBU/L3LQlouLoiiKUlt0cVEURVEKRxcXRVEUpXDaenEJlDCS6sasJIq+xu38c/TIOZ+yFEM2iyxf5hi9lTp5cj4lbE2+jAqujPxbuWO3dLuoupF8CXZpm7zqOH9FmJhnLUOplfc65lOfWVRaNjubjYOKzawIFHyx5QF4QoTZc873fKU5Z+uL7M8zY+wWH6609eKiKIqi1Ia2XFzk/FKG422KDUlxZckfFmvHIuPJrTRJlUvKH4c6iy9/xZW/UqtwxZWLes/zvIgoR+4zf4WPnFfO3rewjEE3BZfp2ltil2wSccbr7L2blYbG52mTcQ9muZgYew5ln5Ec81uMoVxnr8w15wqSi7Xl4qIoiqLUloYsLkR0ERE9QUQHiGiGcNwcIlpJRKuJ6JpI+WAiuouIVoWvg+oTuaIoiuJCo765rADwTgD32Q4gog4A1wE4B8ARAC4hoiPC6msA3MPMUwDcE75XFEVRmoRGPeb4KcByr7DCTACrmXlNeOzNAM4H8GT4emp43E0A7gXwT75xXP6Dh4x3F194dSdmX7sYW3e+mar7+ZJ1+MNTm7Fu604cM3ZgrO7jP1+G7l3T6/X23W9i9rWLsX13ur17V27B7GsXY+O23Rjev0es7l9/+yS+fucz2P3mgZTdef/9APYYyh9a+ypmX7sYm3fsSdVdv/hZ/HzJOry0bXeq7pLvPogDBjXJ868EffHqG3tTdT/8y/P43fKNeOHVnThhcvxp1FffvAzdO9J9sXnHHmtf3P7ES1i27jVseG0XJg3rE6v7518/jj49zMP1rP+8D2/s2Zcqv3/Vy+W+SA61/7x7FW7803PYujN9Xn9zw4N4c3+6b59+aYe1L757/xr88uH1eP7VnZh1ULwvPnjjEuM42xT2hWmc3bpsA/7y7CtYv3UXjhrTP1b3iZ8vQ6/uHSmb1/fsw+xrF2PH7nRfLH4mGGcvbduNof3i4+zfb38a3773Wbxm6Itz/us+7NmX7oulz9nH2Xfuexa3LF2HDa/tAibEbypc/oOHjMqp1Vtet/bFjx98Hr9/PBhnMycNjtV9/OZl6OE55257bAOWrH3VOOc+syAYZ6YY5/zX/di1d3+q/IFwnG3avhs9u8Wvy9fuWIkb7ltjnXP7D6QdrXhxG2Zfuxgvv57uW2nOfeQnD6PD8Jn64mu7rH27cNkG/HXNq9jw2i5MHBqfc5+85TH0NowzVxqyuDgyBsC6yPv1AI4P/x7BzBsBgJk3EtFwWyNENA/APAAYP348AOCEyUNw4VvGYM++YKC8Zfyg8oV6z4xxMcne2EG90S/8UPvo6QfjyY3bAQBTRvTFOUeNAgAcPXYA3n3sWOzcG0zqI0cPwGmHBSG9Y+pobNmxpyz5G9S7O8YP7g0A+PDJk/HA6i3l9k4+eBgAYPKwPrhk5nhs2xVM9kNG9sO5Rwe+TjtsOB5/cRv2HQgm/KyDh+DwUcGHz2UnTcTdT20qtzc1XPz69eiKeadMxvqtO8t175o+BgBw8sFDccG00dgbfphOHz8Ix08OJvBFM8bGpJKTh/ZFt3DB+NjpB2P1ltfL7Z03NWhv6tiBsb44euwAnDJlKADgndPH4o09+8ttDu7THWMH9QIAzDtlMh567tVye6cfNgIAcNjIfvibGeOwY08wMQ4d2Q9nHzkSAHDWkSPwzKYd5UXxbT274eDhfQEAH5w1CfetqvTttHFBXwzt2wMfmDURm7YHk/2QEf1w/rQg9lOmDMP500aXF5bjJw0p2/2f4yfEPtAPGtYXHV0Ivbp14Iq3HYQXXn2j7OuCsL3kOJs2biBODBeed04fi517K30xZmAv9O8VjLOPnHoQlq17rdxe6XyPGjsAFx07Fm+EfXvYyH4468ign94xdTQ279hTHruDenfHhCHBOPvQyZNwf6QvTjpoaNnnpSdMwCtv7Cn3xXlTRwMAZh8xAk+/tAP7w3F2wuQhmDp2AADg8pMm4s4nXyq3d/SYoI/6dO/A350yGeui4+zYsca+mDFhEI6bFCw8l8wch+5dKx+K0Tl39RlTsGrzjnJ7pfiSc+6oMQNwypRh5b6wzbkr3jYZj7ywtdzerIODvjh0hGGcHTUy7IuRWLnp9XJfROfcB2dNwr3PbC63d+yEYO6MHtgL7z9xQnmBmDKiL949PeiL5JybMWEQjp0Y9MV7jx9fHgdTRvTFISP6AQj+If6xM6ZgdawvgnE2ffxAvGv6WOx6M+iLaeMG4qRwnF107LjYP5RGDeiFgb27AQjGWbQvTjt0eNiX/WPjDADuhj9Uq0fwEtHdAEYaqj7DzLeGx9wL4B+YeanB/iIAZzPzh8P3lwKYycwfJaLXmHlg5NitzJy57zJjxgxeujTlSlEURREgooeZ2bo/bqJm31yY+cwqm1gPYFzk/VgAG8K/NxHRqPBbyygAm6v0pSiKohRIM0uRlwCYQkSTiKg7gIsBLAzrFgK4LPz7MgC3NiA+RVEUxUKjpMgXEtF6ACcC+B0R3RGWjyaiRQDAzPsAXAXgDgBPAbiFmZ8Im/gKgNlEtArA7PC9oiiK0iTUbM+lGdE9F0VRFH/y7Lk0820xRVEUpUXRxUVRFEUpHF1cFEVRlMLRxUVRFEUpnLba0CeiHQBWNjqOJmEogJcbHUSToH1RQfuigvZFhUOZuZ+PQTOnf6kFK30VD50VIlqqfRGgfVFB+6KC9kUFIvKW2eptMUVRFKVwdHFRFEVRCqfdFpcbGh1AE6F9UUH7ooL2RQXtiwrefdFWG/qKoihKfWi3by6KoihKHdDFRVEURSmctlhciGgOEa0kotVEdE2j46k3RPR9ItpMRCsiZYOJ6C4iWhW+Zj5srdUhonFE9EcieoqIniCiq8PyduyLnkT0EBE9FvbFv4blbdcXJYiog4geJaLbwvdt2RdE9BwRPU5Ey0oS5Dx90ekXFyLqAHAdgHMAHAHgEiI6orFR1Z0bAcxJlF0D4B5mngLgnvB9Z2cfgE8y8+EATgBwZTgW2rEv9gA4nZmnApgGYA4RnYD27IsSVyN4vEeJdu6L05h5WuR3Pt590ekXFwAzAaxm5jXMvBfAzQDOb3BMdYWZ7wPwaqL4fAA3hX/fBOCCesbUCJh5IzM/Ev69A8EHyRi0Z18wM78evu0W/s9ow74AACIaC2AugP+NFLdlX1jw7ot2WFzGAFgXeb8+LGt3RjDzRiD40AUwvMHx1BUimgjgLQD+ijbti/A20DIEjwm/i5nbti8A/CeATwE4EClr175gAHcS0cNENC8s8+6Ldkj/QoYy1V+3MUTUF8CvAHycmbcTmYZI54eZ9wOYRkQDASwgoqMaHFJDIKK3A9jMzA8T0akNDqcZmMXMG4hoOIC7iOjpPI20wzeX9QDGRd6PBbChQbE0E5uIaBQAhK+bGxxPXSCibggWlp8w86/D4rbsixLM/BqAexHsy7VjX8wCcB4RPYfgtvnpRPRjtGdfgJk3hK+bASxAsLXg3RftsLgsATCFiCYRUXcAFwNY2OCYmoGFAC4L/74MwK0NjKUuUPAV5XsAnmLmayNV7dgXw8JvLCCiXgDOBPA02rAvmPnTzDyWmSci+Hz4AzO/D23YF0TUh4j6lf4GcBaAFcjRF23xC30iOhfBPdUOAN9n5i81NqL6QkQ/A3AqghTimwB8DsBvANwCYDyAFwBcxMzJTf9OBRGdDOB+AI+jcm/9nxHsu7RbXxyDYGO2A8E/Mm9h5i8Q0RC0WV9ECW+L/QMzv70d+4KIJiP4tgIE2yY/ZeYv5emLtlhcFEVRlPrSDrfFFEVRlDqji4uiKIpSOLq4KIqiKIWji4uiKIpSOLq4KIqiKIWji4vSdhDRQCL6v5H3o4nolzXydQERfbYWbeeBiO4lohlC/X8Q0en1jEnpnOjiorQjAwGUFxdm3sDM766Rr08B+J8atV0LvoX2yv6r1AhdXJR25CsADgqfV/E1IppYetYNEV1ORL8hot8S0VoiuoqI/j58zseDRDQ4PO4gIro9TO53PxEdlnRCRIcA2MPML4fvLyKiFeEzVO4LyzrCGJYQ0XIi+ruI/afC52o8RkRfCcumhXEsJ6IFpedqhN9I/p2CZ7Q8Q0RvDct7EdHN4fE/B9Ar4vfGMJ7HiegTAMDMzwMYQkQja9X5SnvQDokrFSXJNQCOYuZpQDlDcpSjEGRM7glgNYB/Yua3ENE3ALwfQbaHGwBcwcyriOh4BN9OkreTZgF4JPL+swDOZuYXS6lXAHwIwDZmPo6IegD4ExHdCeAwBGnNj2fmnaVFDcAPAXyUmRcT0RcQZFv4eFjXlZlnhhkpPocgpctHAOxk5mPCX+WX4pkGYAwzHxX2QSkehMfMQpCDTVFyoYuLoqT5Y/i8lx1EtA3Ab8PyxwEcE2ZVPgnALyIZlXsY2hkFYEvk/Z8A3EhEtwAoJc08K2yzdFtuAIApCBaGHzDzTgBg5leJaACAgcy8ODz2JgC/iLRfavNhABPDv08B8M2wjeVEtDwsXwNgMhF9C8DvANwZaWczgNGmjlEUV3RxUZQ0eyJ/H4i8P4BgznQB8Frpm4/ALgSLBQCAma8Iv+XMBbCMiKYheCTER5n5jqghEc2B/6MhSnHuR3xup9ph5q1ENBXA2QCuBPAeAB8Mq3uGsStKbnTPRWlHdgDol9eYmbcDWEtEFwFBtuXwgzrJUwAOLr0hooOY+a/M/FkALyN4FMQdAD4SPgoARHRImI32TgAfJKLeYflgZt4GYGtpPwXApQAWQ+Y+AO8N2zgKwDHh30MBdGHmXwH4fwCmR2wOQZAJV1Fyo99clLaDmV8hoj+Fm/i/B3BdjmbeC+DbRPQvCB4RfDOAxxLH3Afg60REHGSI/RoRTUHwbeWe8PjlCG5hPRI+EmALgAuY+fbwm81SItoLYBGCDM6XAbg+XHTWAPhARpzfBvCD8HbYMgAPheVjwvLSPzA/DZSfd3MwgKV+3aEocTQrsqLUECL6LwC/Zea7Gx2LC0R0IYDpzPz/Gh2L0trobTFFqS1fBtC70UF40BXA1xsdhNL66DcXRVEUpXD0m4uiKIpSOLq4KIqiKIWji4uiKIpSOLq4KIqiKIWji4uiKIpSOP8fwfO6qbEHI04AAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Plot the square wave\n", "sq_wave = plt.figure()\n", "plt.plot(time, amplitude)\n", "plt.axis((0, 50, -1.1, 1.1))\n", "plt.xlabel('time (seconds)')\n", "plt.ylabel('amplitude (a.u.)');" ] }, { "cell_type": "code", "execution_count": 8, "id": "exotic-making", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Here's a zoomed-in view of the square wave showing the first few periods.\n", "plt.plot(time, amplitude)\n", "plt.axis((0, 4, -1.1, 1.1))\n", "plt.xlabel('time (seconds)')\n", "plt.ylabel('amplitude (a.u.)');\n" ] }, { "cell_type": "code", "execution_count": 9, "id": "provincial-runner", "metadata": {}, "outputs": [], "source": [ "# Compute the discrete Fourier Transform of the amplitude data using 'fft()'.\n", "# The fft function outputs a vector of complex numbers.\n", "from scipy.fft import fft\n", "y = fft(amplitude)" ] }, { "cell_type": "code", "execution_count": 10, "id": "ready-estate", "metadata": {}, "outputs": [], "source": [ "# The magnitude of the fft can be calculated by adding the squares of the\n", "# real and imaginary components (and then taking the square root). The\n", "# tangent of the phase is determined by the ratio of the imaginary and real parts.\n", "# NumPy has built-in functions 'np.abs()' and 'np.angle()' that can be used\n", "# to calculate these quantities directly.\n", "N = len(y)\n", "mag = np.abs(y)\n", "phase = np.angle(y)" ] }, { "cell_type": "code", "execution_count": 11, "id": "satellite-freedom", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(200.0, 0.020002000200020003)" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# We have to determine the appropriate frequency scale for the x-axis. The\n", "# maximum frequency is set by the spacing between adjacent times. The\n", "# frequency step, is set by fmax/(number of points - 1).\n", "fmax = 1/(time[1]-time[0])\n", "fstep = fmax/(len(time) - 1)\n", "fmax, fstep" ] }, { "cell_type": "code", "execution_count": 12, "id": "indian-pasta", "metadata": {}, "outputs": [], "source": [ "# Therefore the frequency axis is:\n", "freq = np.arange(0, fmax + fstep, fstep)" ] }, { "cell_type": "code", "execution_count": 14, "id": "light-hearts", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Below, we plot the magnitude of the fourier transform. I don't know\n", "# enough about fft to know why, but the magnitude that is output\n", "# is the amplitude of the time signal multiplied by one half the number of\n", "# points. To get just the amplitude, I will divided the magnitude by N/2\n", "# before plotting.\n", "fft_mag = plt.figure()\n", "plt.plot(freq, mag/(len(time)/2));" ] }, { "cell_type": "code", "execution_count": 16, "id": "approved-october", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Here's a zoomed-in view of the fft magnitude.\n", "plt.plot(freq, mag/(len(time)/2));\n", "plt.axis((0, 10, 0, 1.5))\n", "plt.xlabel('frequency (hetrz)')\n", "plt.ylabel('amplitude (a.u.)');\n", "# Notice that the fft shows nonzero frequency components only at the odd\n", "# harmonics of the fundamental frequency (1 Hz). Also, the amplitudes\n", "# (after removing the N/2 contribution) are correct. One expects the\n", "# height of the fundamental frequency component of a square wave of amplitude\n", "# 1 to be 4/pi = 1.27. The higher order harmonics should have heights equal\n", "# 4/(pi*n) where n = 3, 5, 7, ..." ] }, { "cell_type": "code", "execution_count": 17, "id": "divine-parking", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# We next verify that the inverse fourier transform 'ifft()' works as expected.\n", "# If we apply 'ifft()' to y, we should recover the original square wave.\n", "from scipy.fft import ifft\n", "g = ifft(y)\n", "plt.figure()\n", "plt.plot(time, np.real(g), 'm-')\n", "plt.axis((0, 50, -1.1, 1.1))\n", "plt.xlabel('time (seconds)')\n", "plt.ylabel('amplitude (a.u.)');" ] }, { "cell_type": "code", "execution_count": 18, "id": "allied-interpretation", "metadata": {}, "outputs": [], "source": [ "# All of this works well when using artificial (i.e. noiseless) data. In\n", "# this last example, we'll import some data from the PHYS 232 thermal waves\n", "# experiment and apply the fft routine. The data file that we'll work with\n", "# is called \"fftdata.dat\".\n", "# Import data.\n", "PHYS232 = np.loadtxt('fftdata.dat')\n", "time = PHYS232[:, 0]\n", "amplitude = PHYS232[:, 1]" ] }, { "cell_type": "code", "execution_count": 19, "id": "demanding-hampton", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Plot the imported data\n", "plt.plot(time,amplitude)\n", "plt.xlabel('time (seconds)')\n", "plt.ylabel('temperature (Celsius)');" ] }, { "cell_type": "code", "execution_count": 21, "id": "progressive-marine", "metadata": {}, "outputs": [], "source": [ "# Compute the discrete Fourier Transform of the amplitude data using 'fft()'.\n", "# The fft function outputs a vector of complex numbers.\n", "y = fft(amplitude)\n", "m = abs(y)" ] }, { "cell_type": "code", "execution_count": 22, "id": "offshore-nightmare", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(1.0, 9.264406151565684e-05)" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# We have to determine the appropriate frequency scale for the x-axis. The\n", "# maximum frequency is set by the spacing between adjacent times. The\n", "# frequency step, is set by fmax/(number of points - 1).\n", "fmax = 1/(time[1]-time[0])\n", "fstep = fmax/len(time)\n", "fmax, fstep" ] }, { "cell_type": "code", "execution_count": 23, "id": "racial-thumbnail", "metadata": {}, "outputs": [], "source": [ "# Therefore the frequency axis is:\n", "freq = np.arange(0, fmax, fstep)" ] }, { "cell_type": "code", "execution_count": 24, "id": "designing-eugene", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Below, we plot the magnitude of the fourier transform. \n", "fft_magExp = plt.figure()\n", "plt.plot(freq, m/(len(time)/2));" ] }, { "cell_type": "code", "execution_count": 25, "id": "individual-postcard", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Here's a zoomed-in view of the fft magnitude.\n", "plt.plot(freq, m/(len(time)/2))\n", "plt.axis((0, 0.02, 0, 7))\n", "plt.xlabel('frequency (hetrz)')\n", "plt.ylabel('amplitude (a.u.)');\n", "# The fundamental frequency of this data is 0.003 Hz with peaks at the odd\n", "# harmonics (0.009 and 0.015 Hz)." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.8" } }, "nbformat": 4, "nbformat_minor": 5 }